//给定两个以 有序链表 形式记录的训练计划 l1、l2，分别记录了两套核心肌群训练项目编号，请合并这两个训练计划，按训练项目编号 升序 记录于链表并返回。 
//
// 注意：新链表是通过拼接给定的两个链表的所有节点组成的。 
//
// 
//
// 示例 1： 
//
// 
//输入：l1 = [1,2,4], l2 = [1,3,4]
//输出：[1,1,2,3,4,4] 
//
// 示例 2： 
//
// 
//输入：l1 = [], l2 = []
//输出：[] 
//
// 示例 3： 
//
// 
//输入：l1 = [], l2 = [0]
//输出：[0] 
//
// 
//
// 提示： 
//
// 0 <= 链表长度 <= 1000 
//
// 
//
// 注意：本题与主站 21 题相同：https://leetcode-cn.com/problems/merge-two-sorted-lists/ 
//
// 
//
// Related Topics 递归 链表 👍 396 👎 0


package LeetCode.editor.cn;


import LeetCode.Recursion.merge_two_sorted_lists;

/**
 * @author ldltd
 * @date 2025-04-29 16:53:18
 * @description LCR 142.训练计划 IV
 
 */
 
public class HeBingLiangGePaiXuDeLianBiaoLcof {
    public static void main(String[] args) {
    //测试代码
    HeBingLiangGePaiXuDeLianBiaoLcof fun = new HeBingLiangGePaiXuDeLianBiaoLcof();
    Solution solution= fun.new Solution();
    
    }

//leetcode submit region begin(Prohibit modification and deletion)

//  Definition for singly-linked list.
  public class ListNode {
      int val;
      ListNode next;
      ListNode() {}
      ListNode(int val) { this.val = val; }
      ListNode(int val, ListNode next) { this.val = val; this.next = next; }
  }

class Solution {
    public ListNode trainningPlan1(ListNode l1, ListNode l2) {
        ListNode res=new ListNode();
        ListNode p=res;
        while(l1!=null&&l2!=null){
            if(l1.val<l2.val){
                res.next=l1;
                l1=l1.next;
                res=res.next;
            }else{
                res.next=l2;
                l2=l2.next;
                res=res.next;
            }
        }
        res.next=l1==null?l2:l1;
        return p.next;
    }

    public ListNode trainningPlan(ListNode list1, ListNode list2) {
        if(list1==null){
            return list2;
        }else if(list2==null){
            return list1;
        }else if(list1.val<list2.val){
            list1.next=trainningPlan(list1.next,list2);
            return list1;
        }else {
            list2.next=trainningPlan(list1,list2.next);
            return list2;
        }
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
